71 uint16_t ADC_Result[64];
72 volatile uint16_t ADC_Result_Average;
74 uint16_t ADC_Result_sum;
77 WDT_A_hold(WDT_A_BASE);
86 ADC10_A_init(ADC10_A_BASE,
87 ADC10_A_SAMPLEHOLDSOURCE_SC,
88 ADC10_A_CLOCKSOURCE_ADC10OSC,
89 ADC10_A_CLOCKDIVIDER_1);
91 ADC10_A_enable(ADC10_A_BASE);
98 ADC10_A_setupSamplingTimer(ADC10_A_BASE,
99 ADC10_A_CYCLEHOLD_16_CYCLES,
100 ADC10_A_MULTIPLESAMPLESENABLE);
109 ADC10_A_configureMemory(ADC10_A_BASE,
111 ADC10_A_VREFPOS_AVCC,
112 ADC10_A_VREFNEG_AVSS);
123 DMA_initParam
param = {0};
124 param.channelSelect = DMA_CHANNEL_0;
125 param.transferModeSelect = DMA_TRANSFER_REPEATED_SINGLE;
126 param.transferSize = 64;
127 param.triggerSourceSelect = DMA_TRIGGERSOURCE_24;
128 param.transferUnitSelect = DMA_SIZE_SRCWORD_DSTWORD;
129 param.triggerTypeSelect = DMA_TRIGGER_RISINGEDGE;
136 DMA_setSrcAddress(DMA_CHANNEL_0,
137 ADC10_A_getMemoryAddressForDMA(ADC10_A_BASE),
138 DMA_DIRECTION_UNCHANGED);
145 DMA_setDstAddress(DMA_CHANNEL_0,
146 (uint32_t)(uintptr_t)&ADC_Result[0],
147 DMA_DIRECTION_INCREMENT);
150 DMA_clearInterrupt(DMA_CHANNEL_0);
151 DMA_enableInterrupt(DMA_CHANNEL_0);
154 DMA_enableTransfers(DMA_CHANNEL_0);
160 ADC10_A_startConversion(ADC10_A_BASE,
161 ADC10_A_REPEATED_SINGLECHANNEL);
163 __bis_SR_register(CPUOFF + GIE);
167 ADC_Result_sum = 0x0;
168 for (
i = 0;
i < 64;
i++){
169 ADC_Result_sum += ADC_Result[
i];
173 ADC_Result_Average = ADC_Result_sum >> 6;
183 #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
185 #elif defined(__GNUC__)
186 __attribute__((interrupt(DMA_VECTOR)))
189 switch (__even_in_range(DMAIV,16)){
194 ADC10_A_disableConversions(ADC10_A_BASE,
195 ADC10_A_PREEMPTCONVERSION);
MPU_initThreeSegmentsParam param
__bic_SR_register_on_exit(LPM3_bits|GIE)